home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 4_0 / HYPERXCM / XCMDSTRI.C < prev    next >
C/C++ Source or Header  |  1991-10-22  |  3KB  |  113 lines

  1. #include <string.h>
  2. /*----------------------------------------------------------------
  3. * This utility computes the length of a C-string.
  4. *---------------------------------------------------------------*/
  5.  
  6. size_t strlen (str)
  7.   char *str;
  8. { char *temp;
  9.  
  10.   temp = --str;
  11.   while (*(++temp)) ;
  12.   
  13.   return ((size_t)(temp - str));
  14. } /*- proc-end: strlen -*/
  15.  
  16. /*----------------------------------------------------------------
  17. * This utility copies a C string from one place to another.
  18. *---------------------------------------------------------------*/
  19.  
  20. char* strcpy (target, source)
  21.   char *target;
  22.   char *source;
  23. { char *dest;
  24.   dest = target;
  25.   while ((*target++ = *source++) != 0) ;
  26.   return (dest);
  27. } /*- proc-end: strcpy -*/
  28.  
  29. /*----------------------------------------------------------------
  30. * This utility copies a C string, limited length .
  31. *---------------------------------------------------------------*/
  32.  
  33. char* strncpy (target, source, length)
  34.   char *target;
  35.   char *source;
  36.   size_t length;
  37. { char *dest;
  38.   dest = target;
  39.   while (length--)
  40.   { if ((*target++ = *source++) != 0) continue;
  41.     while (length--) *target++ = '\0';
  42.   }
  43.   *target = '\0';
  44.   return (dest);
  45. } /*- proc-end: strcpy -*/
  46.  
  47. /*------------------------------------------------------------------
  48. * This utility concatenates two C-strings, source appended to target.
  49. *-----------------------------------------------------------------*/
  50.  
  51. char* strcat (target, source)
  52.   char *target;
  53.   char *source;
  54. { char *dest;
  55.   dest = target;
  56.   --target;
  57.   while (*++target) ;
  58.   while ((*target++ = *source++) != 0) ;
  59.   return (dest);
  60. } /*- proc-end: strcat -*/
  61.  
  62. /*------------------------------------------------------------------
  63. * This utility concatenates two C-strings, limited length.
  64. *-----------------------------------------------------------------*/
  65.  
  66. char* strncat (target, source, length)
  67.   char *target;
  68.   char *source;
  69.   size_t length;
  70. { char *dest;
  71.   dest = target;
  72.   --target;
  73.   while (*++target) ;
  74.   while (length--)
  75.   { if ((*target++ = *source++) != 0) continue;
  76.     return (dest);
  77.   }
  78.   *target = '\0';
  79.   return (dest);
  80. } /*- proc-end: strncat -*/
  81.  
  82. /*------------------------------------------------------------------
  83. * This utility compares two C-strings, return < 0 > .
  84. *-----------------------------------------------------------------*/
  85.  
  86. int strcmp (target, source)
  87.   char *target;
  88.   char *source;
  89. {
  90.   while (*target == *source)
  91.   { if (*target == 0) return (0);
  92.     ++source;  ++target;
  93.   }
  94.   return ((int)(*target-*source));
  95. } /*- proc-end: strcmp -*/
  96.  
  97. /*------------------------------------------------------------------
  98. * This utility compares two C-strings, limited length.
  99. *-----------------------------------------------------------------*/
  100.  
  101. int strncmp (target, source, length)
  102.   char *target;
  103.   char *source;
  104.   size_t length;
  105. {
  106.   while (length && (*target == *source))
  107.   { if (*target == 0) return (0);
  108.     ++source;  ++target;  --length;
  109.   }
  110.   if (length) return ((int)(*target-*source));
  111.   return (0);
  112. } /*- proc-end: strncmp -*/
  113.